======================================================
MPPWC v0.96.5: a Tracker Module Decoder for Winamp
Released: May 26, 2013
Author: Dios Gabor (Dege)
======================================================

1. Intro
--------

Recently I totally revamped my old music player originating
in the DOS era that was planned to be used for some demoscene
stuffs. Needless to mention that finally I (we) have never
released anything to any scene party, but the code was being
more or less maintained.
A few month ago I decided to port it to "thin" C++ and partly
assembly using modern things, just for fun. The evergreen pain
were the things missing in supporting of Impulse Tracker files
(>v2.0 with compressed samples, resonant filtering, and as I
looked around I found that many of new IT songs exist that use
stereo samples and a few unofficial additions to the IT format).
I think I've overcome most of them (wasn't easy to find info on
those since Jeffrey Lim never published that in his technical
descriptions as far as I know).

Altough creating a Winamp plugin was not the goal, but when
I finished I thought why not..


2. Features
-----------

So, MPPWC is an input plugin for Winamp to decode the following
tracker formats:

Amiga ProTracker (*.mod)
Composer 669	 (*.669)
MultiTracker	 (*.mtm)
Scream Tracker3  (*.s3m)
Fast Tracker 2	 (*.xm)
Impulse Tracker	 (*.it)

with true seeking during music playback.

About length detection of module playing time:
There are 2 choices:
- Disabling backward jumps: this option does not allow any loop
                            in the playback, you can listen
                            hidden parts of the song
                            (but not all of them if they are organized
                             unluckily..)
- Detect loop: when MPPWC detects the end of a loop, marks that
               point as the end of the song but MPPWC can be
               configured to repeat loops.


3. Requirements
---------------

Any x86 processor with SSE2 support (it is old enough to dare to
require it as a minimum).

Does 64 bit Winamp exist? I also have the x64 version of the decoder. :)


4. Installing MPPWC "by hand"
-----------------------------

Well, just copy in_mppwc.dll into your Winamp\Plugins folder then
restart Winamp and it should work.


5. Uninstalling MPPWC "by hand"
-----------------------------

Delete these files:

	Winamp\Plugins\in_mppwc.dll
	Winamp\Plugins\in_mppwc.txt


6. Known issues
---------------

- MPPWC may not cooperate well with Winamp's built-in module decoder (in_mod.dll).
  I mean this can cause crashes as they support common file types.

- klisje.mod: Solved, see 'Old Protracker Mode'


7. Thanksto's
---------------

Thanks to Chris Benshoof for his mini crt, I built MPPWC using that great
stuff.
For more see: http://www.benshoof.org/blog/minicrt/


8. Change list
---------------

0.96.5: - Minor panning bug related to IT pan swing is fixed

0.96.4: - Bad handling of keyoff+intrument pair in XMs, fixed
        - Bug in IT channel allocator, fixed

0.96.3: - Annoying crashes on extended .669 commands (Unis 669) are fixed
        - Potential crash related to sustain sample loop in IT files is fixed (e.g. xpv98.it)
        - There were rather annoying things about XM files (dunno what tracker were saved with), now supported:
          - more than 32 tracks
          - using larger than 255 BPM as initial tempo
          - unsaved empty instruments in file
        - Name of intruments without samples in XM files are shown now in file info dialog
        - A tiny extra: you can mute tracks, just click on the ordinal of the track you would like to mute in the file info dialog

0.96.2 were intended to be the last version, but as now, I will release new versions when I fix something in the decoder for any
reason.

0.96.2: - Signal normalization which is the default now (it is not perfect but works much better than the old simple algorithm)
        - Fixing Tone Portamento on stopped channels in S3Ms and ITs
        - Minor GUI improvements

0.96.1: - Fixed TonePorta+VolSlide
        - Fixed 'Set Global Volume' command in S3Ms
        - Fixed detecting of empty patterns
        - Fixed bugs in GUI (mostly cosmetic)

0.96:	- Missing features implemented: IT instrument volume & pan swing
        - Random wave vibrato/tremolo/panbrello didn't work, fixed
        - When a note off/note fade with an instrument were given together
          then IT files played improperly (e.g. ocean_breeze.it), fixed
        - Number of handled IT instruments/samples is raised to 199 to play (some)
          nonregular IT files properly
        - Scale of tremolo is fixed in S3M/IT files
        - Handling 16 bit samples is fixed in the S3M loader
        - Lack of supporting FT2 command Lxx (Set Volume envelope position), implemented
        - Fixed FT2 command Kxx (Key Off)
        - Fixed simultaneous arpeggio+portamento
        - Saving plugin settings now follows the recommended folder to use
        - Uninstall support for the plugin
        - File info dialog is somewhat more advanced compared to previous versions
          [all that gui crap has turned this plugin into a big fat monster :( ]
        - New plugin config options:
             - Mixing freq, output quality
             - Optional remove of initial and trailing silence (not the same as trailing
               empty patterns)
             - Old Protracker mode (very first version of Protracker capable of constant
               tempo at 125 BPM, play klisje.mod with this option enabled :) )
        - Lot of other fixings, I hope I have not broken anything working properly before

0.95:	- A serious bug of handling IT instrument envelopes is fixed
        - Fixing the usage of 'last nonzero effect parameter' in S3M's, it was buggy
        - Fixing the 'Retrig and Volume Slide' effect to match ST3, FT2 and IT
        - Resonant filter is slightly modified to match Impulse Tracker better
        - A bug in the mixer is fixed: it couldn't handle the over-amplficiation
          when large resonance values were used; amplification interval is widened
        - A bug in detecting loops is fixed (ehh.. uninitialized variable..)
        - Backward seeking could cause incorrent playing speed, fixed
        - Random memory content could be attached to the title of 669's, fixed
        - Option 'Strip ending empty patterns' is added to the config dialog
        - 'Volume amplification' is added to the config dialog

0.94:	The original version


Enjoy!
	Dege
